package com.jr.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.jr.mapper.ParkingMapper;
import com.jr.pojo.ParkingSpaces;
import com.jr.service.ParkingService;
import com.jr.vo.ParkingSpacesParkingRecordsVehicles;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * 停车场信息服务实现类
 */
@Service
public class ParkingServiceImpl implements ParkingService {
    
    @Resource
    private ParkingMapper parkingMapper;
    
    /**
     * 模糊分页多表查询停车场信息
     * @param pageNum 当前页码
     * @param code 车位编号（模糊查询）
     * @param status 车位状态（模糊查询）
     * @param description 区域描述（模糊查询）
     * @return 分页结果
     */
    @Override
    public PageInfo<ParkingSpacesParkingRecordsVehicles> findParkingInfoByPage(
            Integer pageNum,
            String code,
            Integer status,
            String description
    ) {
        // 如果页码为null或小于1，则默认查询第一页
        if (pageNum == null || pageNum < 1) {
            pageNum = 1;
        }
        // 每页展示8条数据
        int pageSize = 8;
        
        // 使用PageHelper进行分页
        PageHelper.startPage(pageNum, pageSize);
        
        // 调用Mapper进行多表查询
        List<ParkingSpacesParkingRecordsVehicles> parkingInfoList = 
                parkingMapper.findParkingInfoByPage(code, status, description);
        
        // 包装成PageInfo对象返回
        return new PageInfo<>(parkingInfoList);
    }
    
    /**
     * 查询全部停车位数据
     * @return 所有停车位信息列表
     */
    @Override
    public List<ParkingSpaces> findAllParkingSpaces() {
        return parkingMapper.findAllParkingSpaces();
    }
    
    /**
     * 查询status分别为0,1,3的数据的总数量
     * @return 各状态数量的Map，key为status值，value为数量
     */
    @Override
    public Map<Integer, Integer> findStatusCount() {
        return parkingMapper.findStatusCount();
    }
}